#define SINGLETON_DECL(TypeName) \
private:\
	TypeName(void);\
	~TypeName(void);\
	TypeName(const TypeName&);\
	TypeName& operator= (const TypeName &);\
	static TypeName* m_instance;\
public:\
	static TypeName* GetInstance();\
private:\


#define SINGLETON_IMPL(TypeName) \
	TypeName *TypeName::m_instance;\
	TypeName* TypeName::GetInstance()\
	{\
	if (!m_instance) {\
	m_instance = new TypeName();\
	}\
	return m_instance;\
	}


#define DISALLOW_COPY_AND_ASSIGN(TypeName) \
	TypeName(const TypeName&); \
	void operator=(const TypeName&)